home *** CD-ROM | disk | FTP | other *** search
/ Aminet 52 / Aminet 52 (2002)(GTI - Schatztruhe)[!][Dec 2002].iso / Aminet / comm / irc / UnrealIRCd-bin.lha / Unreal / makeconf < prev    next >
Text File  |  2002-08-07  |  12KB  |  553 lines

  1. #!/bin/sh
  2. # $Id: makeconf,v 1.1.1.1.2.7 2002/08/07 22:26:45 stskeeps Exp $
  3. # Defaults
  4. #
  5. TIME=`date +"%H:%M:%S %Z"`
  6. DATE=`date +"%a, %b %e %Y"`
  7. IRCDCONF="ircd.conf"
  8. SERVNAME="Server.IRC.net"
  9. COMMENT="IRC server!"
  10. ADMIN="Admin-name"
  11. ADMNICK="Admin"
  12. ADMADDR="admin@no.where.com"
  13. OPERNAME="admin"
  14. OPERADDR="*@*"
  15. OPERPASS="password"
  16. NUMERIC=""
  17. PORT="6667"
  18. OPRT="default"
  19. LINKPASS="linkpass"
  20. VIRTUAL="1.2.3.4"
  21. ENCRYPT="Yes"
  22. FLAGS="OAZHWe"
  23. RESTARTPASS="restartpass"
  24. DIEPASS="diepass"
  25. SERVICES="Services.IRC-Net.Org"
  26.  
  27. # these are so I can use stuff like $1 without it replacing it...like by
  28. # using $dlrsgn$uno for $1
  29. dlrsgn="$"
  30. uno="1"
  31. dos="2"
  32.  
  33. # remove the temp file if it exists
  34. rm -f mkconf.tmp
  35.  
  36. # make a quick script for replacing one line with another
  37.  
  38. cat > repl_str << __EOF__
  39. sed -e "s@^$dlrsgn$uno\(.*\)@$dlrsgn$dos" $IRCDCONF > mkconf.tmp
  40. cp mkconf.tmp $IRCDCONF
  41. rm mkconf.tmp
  42. __EOF__
  43.  
  44. # mark repl_str as an executable
  45. chmod +x repl_str
  46. rm -f repl_str
  47. # Checking out how to specify not to make a new line with the current OS
  48. c=''
  49. n=''
  50. 2>/dev/null
  51. if [ "`eval echo -n 'a'`" = "-n a" ]; then
  52.     c='\c'
  53. else
  54.     n='-n'
  55. fi
  56.  
  57. # If Settings exist, load the info, otherwise tell them to run Config.
  58.  
  59. if [ -r Settings ]; then
  60.     . Settings
  61. else
  62.     echo "Hmm, you need to run Config first!"
  63.     echo "Type ./Config"
  64.     echo "If you have run Config, make sure you are in the directory"
  65.     echo "you ran it from."
  66.     exit 1
  67. fi
  68.  
  69. CONF=$IRCDCONF
  70.  
  71. if [ -r "$CONF" ]; then
  72.     echo "$IRCDCONF found"
  73.     echo " "
  74.     echo "   I don't suggest running this with the conf file already"
  75.     echo "existing, since you will lose all the data in your conf file."
  76.     echo "This script is just for creating one. If you want to recreate"
  77.     echo "a conf file, type 'recreate'."
  78.     echo $n " [exit] -> $c"
  79.     read cc
  80.  
  81.     if [ "$cc" != "recreate" ]; then
  82.         echo " "
  83.         echo "   OK, do you want to edit $IRCDCONF using an editor?"
  84.         echo "If so, specify the editor you want to use. Otherwise,"
  85.         echo "type 'exit'."
  86.         EDITFND="not found"
  87.  
  88.                 if [ -r /usr/bin/pico ]; then
  89.                         EDITFND="pico"
  90.                 fi
  91.  
  92.                 if [ -r /usr/bin/joe ]; then
  93.                         EDITFND="joe"
  94.                 fi
  95.  
  96.         if [ -r /usr/bin/vi ]; then
  97.             EDITFND="vi"
  98.         fi
  99.  
  100.         if [ -r /usr/bin/vim ]; then
  101.             EDITFND="vim"
  102.         fi
  103.  
  104.         while [ "c" = "c" ]; do
  105.             echo $n " [$EDITFND] -> $c"
  106.             read EDITOR
  107.  
  108.             if [ -z "$EDITOR" ]; then
  109.                 EDITOR="$EDITFND"
  110.             fi
  111.  
  112.             if [ "$EDITOR" = "exit" ]; then
  113.                 echo "Have a nice day."
  114.                 exit 1
  115.             fi
  116.  
  117.             if [ -f $EDITOR ]; then
  118.                 $EDITOR $CONF
  119.                 exit 1
  120.             fi
  121.  
  122.             if [ -f /usr/bin/$EDITOR ]; then
  123.                 /usr/bin/$EDITOR $CONF
  124.                 exit 1
  125.             fi
  126.  
  127.             echo "   Editor not found. Specify a valid editor or"
  128.             echo "type 'exit' to quit this script."
  129.         done
  130.  
  131.     fi
  132.  
  133.     mv $CONF "$CONF.saved"
  134.     rm $CONF
  135.     echo "$IRCDCONF has been renamed to ircd.conf.saved"
  136. else
  137.     echo "$IRCDCONF is not found. (good)"
  138. fi
  139.  
  140. clear
  141. echo "|=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=|"
  142. echo "| Welcome to the $IRCDCONF generator. |"
  143. echo "|=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=|"
  144. echo " "
  145. echo "What will your server name be? (ie: $SERVNAME)"
  146. echo $n " [$SERVNAME] -> $c"
  147. read cc
  148. if [ ! -z "$cc" ]; then
  149.     SERVNAME="$cc"
  150. fi
  151.  
  152. echo " "
  153. echo "What is your IRC server's IP? (ie: $VIRTUAL)"
  154. echo "Use * to bind to all interfaces"
  155. echo $n " [$VIRTUAL] -> $c"
  156. read cc
  157. if [ ! -z "$cc" ]; then
  158.         VIRTUAL="$cc"
  159. fi
  160.  
  161. echo " "
  162. echo "Server comment? (ie: Main Hub Server)"
  163. echo $n " [$COMMENT] -> $c"
  164. read cc
  165. if [ ! -z "$cc" ]; then
  166.     COMMENT="$cc"
  167. fi
  168.  
  169. echo " "
  170. echo "Main port? (ie: 6667)"
  171. echo $n " [$PORT] -> $c"
  172. read cc
  173. if [ ! -z "$cc" ]; then
  174.     PORT="$cc"
  175. fi
  176.  
  177. echo " "
  178. echo "What server numeric does the server have (range = 1..256)"
  179. echo "Must NOT be the same as other servers you link with"
  180. echo $n " [] -> $c"
  181. read cc
  182. if [ ! -z "$cc" ]; then
  183.     NUMERIC="$cc"
  184. fi
  185.  
  186. echo " "
  187. echo "What is your real name? (ie: John Doe)"
  188. echo $n " [$ADMIN] -> $c"
  189. read cc
  190. if [ ! -z "$cc" ]; then
  191.     ADMIN="$cc"
  192. fi
  193.  
  194. echo " "
  195. echo "What is your IRC nickname? (ie: JD)"
  196. echo $n " [$ADMNICK] -> $c"
  197. read cc
  198. if [ ! -z "$cc" ]; then
  199.     ADMNICK="$cc"
  200. fi
  201.  
  202. echo " "
  203. echo "What is your e-mail address? (ie: john@doe.com)"
  204. echo $n " [$ADMADDR] -> $c"
  205. read cc
  206. if [ ! -z "$cc" ]; then
  207.     ADMADDR="$cc"
  208. fi
  209.  
  210. echo " "
  211. OPERNAME="$ADMNICK"
  212. echo "What will your opername be for your O:line? (ie: johndoe)"
  213. echo $n " [$OPERNAME] -> $c"
  214. read cc
  215. if [ ! -z "$cc" ]; then
  216.     OPERNAME="$cc"
  217. fi
  218.  
  219. echo " "
  220. echo "What oper flags do you want to have? (ie: OAWZ)"
  221. echo "Some flags to choose from:"
  222. echo "  o = local oper"
  223. echo "  O = global oper"
  224. echo "  N = network administrator"
  225. echo "  A = server administrator"
  226. echo "  C = co administrator"
  227. echo "  read unrealircd.doc for more info about O:line flags)"
  228. echo $n " [$FLAGS] -> $c"
  229. read cc
  230. if [ ! -z "$cc" ]; then
  231.     FLAGS="$cc"
  232. fi
  233.  
  234.         echo " "
  235.         ENCRYPT=""
  236.         ENCRYPT="bad"
  237.         while [ "$ENCRYPT" = "bad" ]; do
  238.                 echo "Do you use encrypted oper passwords?"
  239.                 echo $n " [Yes] -> $c"
  240.                 read cc
  241.                 if [ -z "$cc" ]; then
  242.                         cc="Yes"
  243.                 fi
  244.                 case "$cc" in
  245.                         [Yy]*)
  246.                                 ENCRYPT="Yes"
  247.                                 ;;
  248.                         [Nn]*)
  249.                                 ENCRYPT="No"
  250.                                 ;;
  251.                         *)
  252.                                 echo "Please specify yes or no."
  253.                                 ENCRYPT="bad"
  254.                                 ;;
  255.                 esac
  256.         done
  257.  
  258. if [ "$ENCRYPT" = "Yes" ] ; then
  259. echo "Compile the file called mkpasswd.c in the 'crypt' directory"
  260. echo "Then run it (./mkpasswd) and input the passwd to be encrypted"
  261. echo "Then copy the output into the passwd slot in the O:line"
  262. echo "NOTE: You can encrypt on irc via /mkpasswd <passwd>"
  263. fi
  264.  
  265. echo " "
  266. echo "What will your /oper password be? (ie: snoopy67)"
  267. echo $n " [$OPERPASS] -> $c"
  268. read cc
  269. if [ ! -z "$cc" ]; then
  270.     OPERPASS="$cc"
  271. fi
  272.  
  273. echo " "
  274. echo "What is your user@host mask on IRC? (ie: *@*.toronto.globalserve.net)"
  275. echo $n " [$OPERADDR] -> $c"
  276. read cc
  277. if [ ! -z "$cc" ]; then
  278.     OPERADDR="$cc"
  279. fi
  280.  
  281. echo " "
  282. echo "What do you want your die password to be?"
  283. echo $n " [$DIEPASS] -> $c"
  284. read cc
  285. if [ ! -z "$cc" ]; then
  286.         DIEPASS="$cc"
  287. fi
  288.  
  289. echo " "
  290. echo "What do you want your restart password to be?"
  291. echo $n " [$RESTARTPASS] -> $c"
  292. read cc
  293. if [ ! -z "$cc" ]; then
  294.         RESTARTPASS="$cc"
  295. fi
  296.  
  297. echo " "
  298. echo "If your running services, or linking to a network that has"
  299. echo "services, please state the services servername."
  300. echo "If you are running a non-services network, just type 'next'"
  301. echo $n " [$SERVICES] -> $c"
  302. read cc
  303.  
  304. #if [ ! -z "$cc" ]; then
  305. #        SERVICES="$cc"
  306. #fi
  307.  
  308. if [ "$cc" = "next" ]; then
  309.         SERVICES="No.Services.Selected"
  310. elif [ ! -z "$cc" ]; then
  311.         SERVICES="$cc"
  312. fi
  313.  
  314. cat > $CONF << __EOF__
  315. ########################
  316. #
  317. # Filename:  $IRCDCONF
  318. #  Created:  $DATE - $TIME
  319. #
  320. ########################
  321.  
  322. ############ Server Info ############
  323. M:$SERVNAME:$VIRTUAL:$COMMENT:$PORT:$NUMERIC
  324. #####################################
  325.  
  326. ############ Administrator Information #############
  327. A:$ADMIN:$ADMNICK:$ADMADDR
  328. ####################################################
  329.  
  330. ############ Y-lines #############
  331. # Client Y:lines
  332. Y:1:90:0:245:100000
  333. # Server Y:lines
  334. Y:50:300:600:1:1000000
  335. ##################################
  336.  
  337. ############ I/Access Lines #############
  338. I:*@*::*@*::1
  339. #########################################
  340.  
  341. ############ X:LINE Die/Restart Password ############
  342. X:$DIEPASS:$RESTARTPASS
  343. #####################################################
  344.  
  345. ## O-line (O:hostmask:password:opername:flags:1) ##
  346. O:$OPERADDR:$OPERPASS:$OPERNAME:$FLAGS:1
  347. ###################################################
  348.  
  349. __EOF__
  350.  
  351.  
  352. echo " "
  353. echo "   Would you like to configure any servers for linking?"
  354. echo "Type the servername, or type 'done' when finished."
  355. echo $n " [done] -> $c"
  356. read cc
  357.  
  358. if [ -z "$cc" ]; then
  359.     cc="done"
  360. fi
  361.  
  362. while [ "$cc" != "done" ]; do
  363.     THESERV="$cc"
  364.  
  365.     SHOST="none"
  366.     while [ "$SHOST" = "none" ]; do
  367.         echo " "
  368.         echo "Hostname or ip for the other server? Must be specified."
  369.         echo $n " [] -> $c"
  370.         read SHOST
  371.     done    
  372.  
  373.     echo " "
  374.     echo "Password to send to the other server?"
  375.     echo $n " [$LINKPASS] -> $c"
  376.     read CLP
  377.     if [ -z "$CLP" ]; then
  378.         CLP="$LINKPASS"
  379.     fi
  380.  
  381.     echo " "
  382.     AUTOPORT=""
  383.     AUTOCONN="bad"
  384.     while [ "$AUTOCONN" = "bad" ]; do
  385.         echo " "
  386.         echo "Should we autconnect to this server?"
  387.         echo $n " [Yes] -> $c"
  388.         read cc
  389.         if [ -z "$cc" ]; then
  390.             cc="Yes"
  391.         fi
  392.         case "$cc" in
  393.             [Yy]*)
  394.                 AUTOCONN="yes"
  395.                 echo "What port should we autoconnect to?"
  396.                 echo $n " [7029] -> $c"
  397.                 read AUTOPORT
  398.                 if [ -z "$AUTOPORT" ]; then
  399.                     AUTOPORT="7029"
  400.                 fi
  401.                 ;;
  402.             [Nn]*)
  403.                 AUTOCONN="no"
  404.                 ;;
  405.             *)
  406.                 echo "Please specify yes or no."
  407.                 AUTOCONN="bad"
  408.                 ;;
  409.         esac
  410.     done
  411.  
  412.     echo " "
  413.     HUB="bad"
  414.     while [ "$HUB" = "bad" ]; do
  415.         echo " "
  416.         echo "Will this server be a hub?"
  417.         echo $n " [Yes] -> $c"
  418.         read cc
  419.         if [ -z "$cc" ]; then
  420.             cc="Yes"
  421.         fi
  422.         case "$cc" in
  423.             [Yy]*)
  424.                 HUB="Yes"
  425.                 ;;
  426.             [Nn]*)
  427.                 HUB="no"
  428.                 ;;
  429.             *)
  430.                 echo "Please specify yes or no."
  431.                 HUB="bad"
  432.                 ;;
  433.         esac
  434.     done
  435.  
  436.     if [ "$HUB" = "Yes" ]; then
  437.         echo "############ HUB LINES #############" >> $CONF
  438.         echo "H:*:*:$THESERV" >> $CONF
  439.         echo "####################################" >> $CONF
  440.         echo "" >> $CONF
  441.     fi
  442.  
  443.         echo "############ C/N LINES #############" >> $CONF
  444.         echo "C:$SHOST:$CLP:$THESERV:$AUTOPORT:50" >> $CONF
  445.         echo "N:$SHOST:$CLP:$THESERV::50" >> $CONF
  446.         echo "####################################" >> $CONF
  447.     echo "" >> $CONF
  448.  
  449.     echo " "
  450.     echo "Type the servername, or type 'done' when finished."
  451.     echo $n " [done] -> $c"
  452.     read cc
  453.     if [ -z "$cc" ]; then
  454.         cc="done"
  455.     fi
  456. done
  457.  
  458. cat >> $CONF << __EOF__
  459. ############ Uline for Services ############
  460. U:$SERVICES:*:*
  461. ############################################
  462.  
  463. ############ Q-Lined NickNames ############
  464. Q::Reserved for services:*C*h*a*n*S*e*r*v*
  465. Q::Reserved for services:*N*i*c*k*S*e*r*v*
  466. Q::Reserved for services:*M*e*m*o*S*e*r*v*
  467. Q::Reserved for services:*H*e*l*p*S*e*r*v*
  468. Q::Reserved for services:*O*p*e*r*S*e*r*v*
  469. Q::Reserved for services:*I*n*f*o*S*e*r*v*
  470. Q::Reserved for Administrator:*Admin*
  471. Q::Reserved for ircops:*IRC*op*
  472. Q::Reserved for ircops:*Oper*
  473. Q::Bug in mIRC:Status
  474. ###########################################
  475.  
  476. ############ PORT LINES #############
  477. __EOF__
  478.  
  479. cc="blank"
  480. echo " "
  481. echo " "
  482. echo "   Would you like any extra ports, other than 6667? Enter them here."
  483. echo "Type 'done' when you are finished. Type 'default' to use 6665-6669/7000."
  484. while [ "$cc" != "done" ]; do
  485.     echo $n " [$OPRT] -> $c"
  486.     read cc
  487.     if [ -z "$cc" ]; then
  488.         cc="$OPRT"
  489.     fi
  490.     if [ "$cc" = "default" ]; then
  491.         echo "P:$VIRTUAL:*:*:6660" >> $CONF
  492.         echo "P:$VIRTUAL:*:*:6661" >> $CONF
  493.         echo "P:$VIRTUAL:*:*:6662" >> $CONF
  494.         echo "P:$VIRTUAL:*:*:6663" >> $CONF
  495.         echo "P:$VIRTUAL:*:*:6664" >> $CONF
  496.                 echo "P:$VIRTUAL:*:*:6665" >> $CONF
  497.                 echo "P:$VIRTUAL:*:*:6666" >> $CONF
  498.                 echo "P:$VIRTUAL:*:*:6668" >> $CONF
  499.                 echo "P:$VIRTUAL:*:*:6669" >> $CONF
  500.                 echo "P:$VIRTUAL:*:*:7000" >> $CONF
  501.         echo "P:$VIRTUAL:*:*:7029" >> $CONF
  502.         echo "#####################################" >> $CONF
  503.         cc="done"
  504.     fi
  505.     if [ "$cc" != "done" ]; then
  506.         if [ $cc = "$PORT" ]; then
  507.             echo "  No, $PORT is already defined in the M:line,"
  508.             echo "please use a port other than $PORT."
  509.         else
  510.             echo "P:$VIRTUAL:*:*:$cc" >> $CONF
  511.         fi
  512.     fi
  513.     case "$OPRT" in
  514.         6660) OPRT="done"
  515.             ;;
  516.         6661) OPRT="6660"
  517.             ;;
  518.         6662) OPRT="6661"
  519.             ;;
  520.         6663) OPRT="6662"
  521.             ;;
  522.         6664) OPRT="6663"
  523.             ;;
  524.         6665) OPRT="6664"
  525.             ;;
  526.         6666) OPRT="6665"
  527.             ;;
  528.         6669) OPRT="6666"
  529.             ;;
  530.         6668) OPRT="6669"
  531.             ;;
  532.         6667) OPRT="6668"
  533.             ;;
  534.         *) OPRT="done"
  535.             ;;
  536.     esac
  537. done
  538.  
  539. # Make it so ONLY the one who created the conf can read or write.
  540. chmod 700 $IRCDCONF
  541.  
  542. cat << __EOF__
  543.  
  544.  
  545.     OK, $IRCDCONF has been generated according to what you specified.
  546. Make sure you double check for errors in $IRCDCONF. We recommend that
  547. you take a look at your $IRCDCONF right now. Thanks for using UnrealIRCd
  548.  
  549. __EOF__
  550.         echo "Have a nice day."
  551.         echo ""
  552.         exit 1
  553.